From 2079d52801921b3446d2e2dd4118068a45ec9f5a Mon Sep 17 00:00:00 2001 From: tsteven4 <13596209+tsteven4@users.noreply.github.com> Date: Sat, 29 Apr 2023 07:11:34 -0600 Subject: [PATCH] remove C style legacy time from sbn format. (#1096) --- sbn.cc | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/sbn.cc b/sbn.cc index f28669026..222cdd548 100644 --- a/sbn.cc +++ b/sbn.cc @@ -19,16 +19,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include // for tm -#include // for size_t, memcpy +#include // for size_t, memcpy -#include // for QString -#include // for QVector -#include // for Q_UNUSED +#include // for QDate +#include // for QDateTime +#include // for QTime +#include // for QString +#include // for QVector +#include // for Q_UNUSED +#include // for UTC #include "defs.h" -#include "gbfile.h" // for gbfread, gbfclose, gbfeof, gbfopen -#include "navilink.h" // for navilink_checksum_packet, locosys_... +#include "gbfile.h" // for gbfread, gbfclose, gbfeof, gbfopen +#include "navilink.h" // for navilink_checksum_packet, locosys_... #define MYNAME "sbn" @@ -220,17 +223,17 @@ decode_sbn_mode(const unsigned char* mode) static void decode_sbn_datetime(const unsigned char* buffer, Waypoint* waypt) { - std::tm tm{}; - int ms = be_readu16(buffer + 6); + int scaled_seconds = be_readu16(buffer + 6); - tm.tm_sec = ms / 1000; - tm.tm_min = buffer[5]; - tm.tm_hour = buffer[4]; - tm.tm_mday = buffer[3]; - tm.tm_mon = buffer[2] - 1; - tm.tm_year = be_readu16(buffer) - 1900; + int ms = scaled_seconds % 1000; + int sec = scaled_seconds / 1000; + int min = buffer[5]; + int hour = buffer[4]; + int mday = buffer[3]; + int mon = buffer[2]; + int year = be_readu16(buffer); - waypt->SetCreationTime(mkgmtime(&tm), (ms % 1000)); + waypt->SetCreationTime(QDateTime(QDate(year, mon, mday), QTime(hour, min, sec, ms), Qt::UTC)); } static void -- 2.30.2